Spreadsheet software applications are used by many different users for manipulating data. Typical spreadsheet applications simulate physical spreadsheets by capturing, displaying, and manipulating data arranged in rows and columns. At the intersection of the columns and the rows are cells. Cells within spreadsheets can contain values such as a number, a string, and an error. Furthermore, cells may also contain formulas that can operate on the values in other cells and display the results. These formulas empower the user to create calculations and business logic that helps the user exploit the data.
Spreadsheets today, however, are limited to the types of data or information that the spreadsheet can capture or manipulate. For example, spreadsheets are currently able to display a currency as dollar sign followed by a number, or as a British Pound symbol followed by a number, but unable to specify how currency values are to be manipulated in mathematical formulas differently from numerical values. Thus, when performing operations on the data, the spreadsheet may fail to notify users of logical inconsistencies, for example when a user adds pounds to dollars.
In other cases, users wish to perform operations on more complex types of data. Currently this is achievable only by using multiple cells and formulas within a spreadsheet.
In yet another set of cases, users wish to perform operations in a spreadsheet on arbitrary data types which are not reducible to multiple cells containing simpler data types. In these cases, spreadsheets lack a way of containing certain types of data, for example a picture or a COM object, such that they can be operated on and passed by formulas, and lack the extensibility such that a developer could create new functions to operate on these arbitrary value types.
As such, spreadsheets offer limited functionality in terms of the types of data they allow.